/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package basedatos;

import genericos.Correos;
import genericos.Insercion;
import genericos.JSPassGenerator;
import genericos.ListaNodos;

/**
 *
 * @author residentene
 */
public class Insertar {
       
   static Insercion in = new Insercion();
   
    /**
    * Metodo que ingresa la explicacion de un borrado de objetivo en la cedula
    * @param datos motivo,descripcion,idcedula,iddireccion,fecha
    */
   public static void in_expobjetivo(String [] datos){
     
           ListaNodos.agregainsert("motivo", datos[0]);
           ListaNodos.agregainsert("complemento",datos[1] );
           ListaNodos.agregainsert("iddireccion", Integer.valueOf(datos[2]));
           ListaNodos.agregainsert("idobjdir", Integer.valueOf(datos[3]));
           java.util.Date hoy= new java.util.Date();
           java.sql.Date today=new java.sql.Date(hoy.getTime());
           ListaNodos.agregainsert("fecha", today );
           in.insertanuevo(ListaNodos.conversion_inser(), "expobjetivo");
           ListaNodos.borradoinser();
           //System.gc();
       
   }
   
  /**
   * Metodo que inserta un usuario.
   * @param correo correo del usuario
   * @param puesto puesto del usuaruio
   * @param nombre nombre del usuario
   * @param nivel nivel del usuario
   */
   public static void in_usuario(String correo,int puesto,String nombre,int nivel){
       ListaNodos.agregainsert("correo", correo);
       String contra=JSPassGenerator.generate(8);
       ListaNodos.agregainsert("contra", contra);
       ListaNodos.agregainsert("puesto", puesto);
       ListaNodos.agregainsert("nombre", nombre);
       ListaNodos.agregainsert("nivel", nivel);
       Correos.mensajecorto(Correos.crearmensaje("Contraseña nueva","Su nueva contraseña para el sistema Zianya es "+contra), correo, "Ingreso a Zianya");
       in.insertanuevo(ListaNodos.conversion_inser(), "usuarios");
       ListaNodos.borradoinser();
       //System.gc();
   }
  /**
   * Metodo que inserta un puesto
   * @param nombre nombre de puesto
   * @param nivel nivel de puesto
   * @param dir direccion de puesto
   */
   public static void in_puesto(String nombre,String nivel,int dir){
       
           ListaNodos.agregainsert("nombre", nombre);
           ListaNodos.agregainsert("nivel", nivel);
           in.insertanuevo(ListaNodos.conversion_inser(), "puestos");
           ListaNodos.borradoinser();
           dependencias(in.getId(), dir);
           //System.gc();
       
   }

   /**
    * insercion de puestos dependientes, organigrama
    * @param puesto puesto
    * @param arriba id del puesto superior
    * @param abajo id del puesto inferior
    */
   public static void in_puedet(int puesto,int arriba,int abajo){
     
           ListaNodos.agregainsert("arriba", arriba);
           ListaNodos.agregainsert("abajo", abajo);
           ListaNodos.agregainsert("idpuesto", puesto);
           in.insertanuevo(ListaNodos.conversion_inser(), "detpuesto");
           ListaNodos.borradoinser();
           //System.gc();
       
   }

   /**
    * Insercion de una dependendencia
    * @param puesto id del puesto
    * @param datos id de la direccion
    * 
    */
   public static void dependencias(int puesto, int datos){
           ListaNodos.agregainsert("dep", datos);
           ListaNodos.agregainsert("idpuesto", puesto);
           in.insertanuevo(ListaNodos.conversion_inser(), "dependencia");
           ListaNodos.borradoinser();
           //System.gc();
       
   }
 /**
  * Metodo que inserta la direccionde un puesto
  * @param datos nombre de las direcciones
  */
   public static void direccion (String []datos){
        for (int i = 0; i < datos.length; i++) {
           ListaNodos.agregainsert("nombre", datos[i]);
           in.insertanuevo(ListaNodos.conversion_inser(), "direccion");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }
   
   /**
    * Metodo que inserta una cedula y devuelve su id, si existe devuelve el id actual
    * @param usuario id del usuario.
    * @return 
    */
  public static int in_cedula(int usuario){
      int id=0;
      if(Seleccion.haycedula(usuario)==1){
          System.out.println("Existe una cedula asociada");
          Cambiar.cedulac(usuario);
          id=Seleccion.idcedula(usuario);
         // System.out.println("in_cedula: Ya existe el id de cedula es "+id);
      }
     else{ 
           int puesto=Seleccion.puestodeuser(usuario);
           System.out.println("El puesto de la cedula es: "+puesto);
           ListaNodos.agregainsert("usuario", usuario);
           ListaNodos.agregainsert("puesto", puesto);
           ListaNodos.agregainsert("jefe", Seleccion.jefe(puesto));
           ListaNodos.agregainsert("cal", 0);
           ListaNodos.agregainsert("aceptado", 0);
           ListaNodos.agregainsert("solobdir", 0);
           ListaNodos.agregainsert("soltac", 0);
           ListaNodos.agregainsert("aceptdir", 0);
           ListaNodos.agregainsert("acepttac", 0);
           ListaNodos.agregainsert("solob", 0);
           in.insertanuevo(ListaNodos.conversion_inser(), "cedula");
           id=in.getId();
           ListaNodos.borradoinser();
           }
           //System.gc();
           System.out.println(id);
           return id;
       
   }
  /**
   * Metodo que inserta objetivos de direccion
   * @param datos nombre,descripcion,idtac,peso,cumple,resutado,logro,trimestre,direccion del 0-8
   */
   public static void in_objdir(String [][] datos){
       //System.out.println(datos.length);
       java.util.Date n=new java.util.Date();
        for (int i = 0; i < datos.length; i++) {
            /*System.out.println(datos[i][0]);
            System.out.println(datos[i][1]);
            System.out.println(datos[i][2]);
            System.out.println(datos[i][3]);
            System.out.println(datos[i][4]);
            System.out.println(datos[i][5]);
            System.out.println(datos[i][6]);
            System.out.println(datos[i][7]);     
            System.out.println(datos[i][8]);*/
                //java.util.Date n=new java.util.Date();
       // System.out.println("el año es ");
            
           ListaNodos.agregainsert("nombre", datos[i][0]);
           ListaNodos.agregainsert("descripcion",datos[i][1] );
           ListaNodos.agregainsert("idtac", Integer.valueOf(datos[i][2]));
           ListaNodos.agregainsert("peso", Integer.valueOf(datos[i][3]));
           ListaNodos.agregainsert("cumple",Integer.valueOf(datos[i][4]) );
           ListaNodos.agregainsert("resultado",datos[i][5] );
           ListaNodos.agregainsert("logro", Integer.valueOf(datos[i][6]));
           ListaNodos.agregainsert("estado", "En Revisión");
           ListaNodos.agregainsert("trimestre", Integer.valueOf(datos[i][7]));
           ListaNodos.agregainsert("direccion", Integer.valueOf(datos[i][8]));
           ListaNodos.agregainsert("aregistro", (n.getYear()+1900));
           
           
           in.insertanuevo(ListaNodos.conversion_inser(), "objdir");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }
    
   //objetivos de colaborador
   /**
    * Metodo que inserta objetivos de colaborador
    * @param datos nombre,descripcioon, comcol,comjefe,objefe,peso,cumple,resultado,logro,cedula del 0-10
    */
   public static void in_objcol(String [][] datos){
       java.util.Date n=new java.util.Date();
       for (int i = 0; i < datos.length; i++) {
           ListaNodos.agregainsert("nombre", datos[i][0]);
           ListaNodos.agregainsert("descripcion",datos[i][1] );
           ListaNodos.agregainsert("comcol",datos[i][2] );
           ListaNodos.agregainsert("comjefe",datos[i][3] );
           ListaNodos.agregainsert("objefe", Integer.valueOf(datos[i][4]));
           ListaNodos.agregainsert("peso", Integer.valueOf(datos[i][5]));
           ListaNodos.agregainsert("cumple", Integer.valueOf(datos[i][6]));
           ListaNodos.agregainsert("resultado",datos[i][7] );
           ListaNodos.agregainsert("logro", Integer.valueOf(datos[i][8]));
           ListaNodos.agregainsert("cedula", Integer.valueOf(datos[i][9]));
           ListaNodos.agregainsert("estado", "En Revisión");
           ListaNodos.agregainsert("trimestre", Integer.valueOf(datos[i][10])); 
           ListaNodos.agregainsert("aregistro", (n.getYear()+1900));
           in.insertanuevo(ListaNodos.conversion_inser(), "objcol");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }
   /**
    * Metodo que inserta objetivos de mando medio 
    * @param datos nombre,descripcion,comcol,comjefe,objdir,peso,cumple,resultado,logro,cedula,trim del 0-10
    */
   public static void in_objmm(String[][]datos){
       java.util.Date n=new java.util.Date();
       for (int i = 0; i < datos.length; i++) {
           ListaNodos.agregainsert("nombre", datos[i][0]);
           ListaNodos.agregainsert("descripcion",datos[i][1] );
           ListaNodos.agregainsert("comcol",datos[i][2] );
           ListaNodos.agregainsert("comjefe",datos[i][3] );
           ListaNodos.agregainsert("objdir", Integer.valueOf(datos[i][4]));
           ListaNodos.agregainsert("peso", Integer.valueOf(datos[i][5]));
           ListaNodos.agregainsert("cumple", Integer.valueOf(datos[i][6]));
           ListaNodos.agregainsert("resultado",datos[i][7] );
           ListaNodos.agregainsert("logro", Integer.valueOf(datos[i][8]));
           ListaNodos.agregainsert("cedula", Integer.valueOf(datos[i][9]));
           ListaNodos.agregainsert("estado", "En Revisión");
           ListaNodos.agregainsert("trimestre", Integer.valueOf(datos[i][10]));
           ListaNodos.agregainsert("aregistro", (n.getYear()+1900));
           in.insertanuevo(ListaNodos.conversion_inser(), "objmm");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }
   //objetivos de cedula de director
   /**
    * Metodo de insercion de objetivos de director
    * @param datos nombre,descripcion,comcol,comjefe,objdir,peso,cumple,resultado,logro,cedula,trim del 0-10
    */
   public static void in_objdirector(String [][]datos){
       java.util.Date n=new java.util.Date();
       for (int i = 0; i < datos.length; i++) {
           ListaNodos.agregainsert("nombre", datos[i][0]);
           ListaNodos.agregainsert("descripcion",datos[i][1] );
           ListaNodos.agregainsert("comcol",datos[i][2] );
           ListaNodos.agregainsert("comjefe",datos[i][3] );
           ListaNodos.agregainsert("objdir", Integer.valueOf(datos[i][4]));
           ListaNodos.agregainsert("peso", Integer.valueOf(datos[i][5]));
           ListaNodos.agregainsert("cumple", Integer.valueOf(datos[i][6]));
           ListaNodos.agregainsert("resultado",datos[i][7] );
           ListaNodos.agregainsert("logro", Integer.valueOf(datos[i][8]));
           ListaNodos.agregainsert("cedula", Integer.valueOf(datos[i][9]));
           ListaNodos.agregainsert("estado", "En Revisión");
           ListaNodos.agregainsert("trimestre", Integer.valueOf(datos[i][10]));
           ListaNodos.agregainsert("aregistro", (n.getYear()+1900));
           in.insertanuevo(ListaNodos.conversion_inser(), "obdirector");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }

   //ingreso de tacticas
   /**
    * Metodo que inseta los datos de una tactica
    * @param datos nombre,descripcion,dominio,peso,cumple,resultado,logro,estado,plan del 0-7
    */
   public static void in_tacticas(String [][] datos){
        for (int i = 0; i < datos.length; i++) {
           ListaNodos.agregainsert("nombre", datos[i][0]);
           ListaNodos.agregainsert("descripcion",datos[i][1] );
           ListaNodos.agregainsert("dominio", Integer.valueOf(datos[i][2]));
           ListaNodos.agregainsert("peso", Integer.valueOf(datos[i][3]));
           ListaNodos.agregainsert("cumple", Integer.valueOf(datos[i][4]));
           ListaNodos.agregainsert("resultado", datos[i][5]);
           ListaNodos.agregainsert("logro", Integer.valueOf(datos[i][6]));
           ListaNodos.agregainsert("estado", "En Revisión");
           ListaNodos.agregainsert("plan", Integer.valueOf(datos[i][7]));
           in.insertanuevo(ListaNodos.conversion_inser(), "tactica");
           ListaNodos.borradoinser();
           //System.gc();
       }
   }
   //ingreso de explicacion de cedula
   /**
    * Metodo que ingresa la explicacion de un borrado de objetivo en la cedula
    * @param datos motivo,descripcion,idcedula,iddireccion,fecha
    */
   public static void in_expced(String [] datos){
     
           ListaNodos.agregainsert("motivo", datos[0]);
           ListaNodos.agregainsert("descripcion",datos[1] );
           ListaNodos.agregainsert("idcedula", Integer.valueOf(datos[2]));
           ListaNodos.agregainsert("iddir", Integer.valueOf(datos[3]));
           java.util.Date hoy= new java.util.Date();
           java.sql.Date today=new java.sql.Date(hoy.getTime());
           ListaNodos.agregainsert("fecha", today );
           in.insertanuevo(ListaNodos.conversion_inser(), "expobj");
           ListaNodos.borradoinser();
           //System.gc();
       
   }
  
   /**
    * Metodo que insera una explicacion de borrado de una tactica
    * @param datos motivo,complemento,idtac,isuser 0-3
    */
   public static void in_exptac(String [] datos){
       
           ListaNodos.agregainsert("motivo", datos[0]);
           ListaNodos.agregainsert("complemento",datos[1]);
           ListaNodos.agregainsert("idtac", Integer.valueOf(datos[2]));
           ListaNodos.agregainsert("idusuario", Integer.valueOf(datos[3]));
           java.util.Date hoy= new java.util.Date();
           java.sql.Date today=new java.sql.Date(hoy.getTime());
           ListaNodos.agregainsert("fecha", today );
           in.insertanuevo(ListaNodos.conversion_inser(), "exptac");
           ListaNodos.borradoinser();
           //System.gc();
       
   }
  
   /**
    * Metodo que inseta un dominio
    * @param datos nombre del dominio
    */
   public static void in_dominio(String datos){
      
           ListaNodos.agregainsert("nombre", datos);
           in.insertanuevo(ListaNodos.conversion_inser(), "dominios");
           ListaNodos.borradoinser();
           //System.gc();
           
   }
  
   /**
    * Método que inserta un plan, solo se le da duracion
    * @param dur duracion en años
    * @return id del plan actual
    */
   public static int in_plan(int dur){
       java.util.Date n=new java.util.Date();
       ListaNodos.agregainsert("duracion",dur);
       ListaNodos.agregainsert("activo", 1);
       ListaNodos.agregainsert("avance", 0);
       ListaNodos.agregainsert("comienzo", (n.getYear()+1900));
       ListaNodos.agregainsert("final", (n.getYear()+1900+dur));
       in.insertanuevo(ListaNodos.conversion_inser(), "plan");
       int num=in.getId();
       Cambiar.activacionplan(num);
       ListaNodos.borradoinser();
       //System.gc();
       return num;
   }
   
}
